Load libraries, load data, clean data

Parley Lake:

Halstead’s Bay:

library(dplyr)
library(stringr)
library(lubridate)
library(Matrix)
library(igraph)
library(bipartite)
library(data.table)
library(ggplot2)
library(gganimate)

#Capture data: refromat capture date as POISXct; retain PIT#, species, and capture date
pit_capture <-read.csv("test_2019_01_21.csv", stringsAsFactors = FALSE, colClasses = "character")
pit_capture<- select(pit_capture, c(Lake, PIT, Length, Sex))
pit_capture$PIT<-as.character(pit_capture$PIT)
head(pit_capture)
##     Lake    PIT Length Sex
## 1 Parley 038305    685   M
## 2 Parley 038306    370   M
## 3 Parley 038309    740   F
## 4 Parley 038312    735   F
## 5 Parley 038314    335   M
## 6 Parley 038315    725   F
length(unique(pit_capture$PIT))
## [1] 613
# pit_capture <-read.csv("Parley_Halsteads_PITdata_p1.csv", stringsAsFactors = FALSE, colClasses = "character")
# pit_capture<- select(pit_capture, c(Lake, X.3, Length, Sex))
# colnames(pit_capture)[colnames(pit_capture)=="X.3"] <- "PIT"
# pit_capture$PIT<-str_sub(pit_capture$PIT, 10, 15)
# head(pit_capture)
# length(unique(pit_capture$PIT))
# 
# 
# pit_capture <-read.csv("Parley_Halsteads_PITdata_p2.csv", stringsAsFactors = FALSE, colClasses = "character")
# pit_capture<- select(pit_capture, c(Lake, PIT, Length, Sex))
# pit_capture$PIT<-as.character(pit_capture$PIT)
# head(pit_capture)
# length(unique(pit_capture$PIT))


#Boat Ramp Site  

boatramp<-read.table("Boat_ramp_complete.log", header=FALSE, fill=TRUE,col.names=c("D", "Date", "Time", "Time2", "HA", "PIT", "Antenna", "Col1","Col2"), na.strings=c("", "NA"))
boatramp<-select(boatramp, c(Date, Time, PIT, Antenna))

boatramp$DATETIME<- as.POSIXct(paste(boatramp$Date,boatramp$Time), format='%Y-%m-%d %H:%M:%S', tz="CDT") #Reformat as POSIXct
boatramp<-boatramp[-which(is.na(boatramp$DATETIME)),] #remove NA values
boatramp$PIT<-as.character(boatramp$PIT) #toString(boatramp$PIT)
boatramp$PIT<-str_sub(boatramp$PIT, 11, 16)
boatramp$PIT[boatramp$PIT==""] <- NA
boatramp<-boatramp[-which(is.na(boatramp$PIT)),]
boatramp<-boatramp[-which(boatramp$PIT=="390146"),] #This PIT ID has a 2018 read (prior to data collection start)
boatramp$Site<-"B"
# write.csv( boatramp, "cleaned_boatramp.csv")

# merged_br<- merge(boatramp, pit_capture,  by="PIT")
merged_br<-boatramp
head(merged_br)
##         Date        Time    PIT Antenna            DATETIME Site
## 1 2019-07-23 22:45:59.05 038301      A1 2019-07-23 22:45:59    B
## 2 2019-07-23 22:46:00.66 038301      A1 2019-07-23 22:46:00    B
## 3 2019-07-24 12:24:17.14 567150      A1 2019-07-24 12:24:17    B
## 4 2019-07-24 12:24:19.65 567150      A1 2019-07-24 12:24:19    B
## 5 2019-07-24 12:24:21.07 567150      A1 2019-07-24 12:24:21    B
## 6 2019-07-24 12:24:29.03 567150      A1 2019-07-24 12:24:29    B
length(unique(boatramp$PIT))
## [1] 106
length(unique(merged_br$PIT))
## [1] 106
unique(boatramp$PIT)
##   [1] "038301" "567150" "775234" "497841" "497855" "497668" "567143" "497581"
##   [9] "497849" "497600" "038393" "775235" "038377" "497631" "775199" "497764"
##  [17] "775217" "497601" "775215" "038391" "038325" "038322" "497811" "775180"
##  [25] "497778" "497875" "038381" "038355" "497656" "497636" "775203" "497876"
##  [33] "497805" "038351" "497766" "038387" "497871" "038335" "775213" "038369"
##  [41] "775172" "497661" "497827" "497639" "038318" "497649" "497675" "038361"
##  [49] "497663" "497887" "497693" "038326" "038344" "038339" "497680" "497753"
##  [57] "497692" "038363" "497836" "497646" "497891" "497641" "497874" "038385"
##  [65] "497877" "497892" "497686" "497673" "497804" "038365" "038334" "038307"
##  [73] "038349" "497870" "775249" "497684" "567184" "567003" "497883" "497644"
##  [81] "497626" "497872" "038328" "038310" "038343" "497809" "038313" "497862"
##  [89] "038308" "567233" "497687" "497861" "775186" "497886" "497653" "567302"
##  [97] "497667" "038306" "497664" "497608" "038388" "497894" "497806" "497858"
## [105] "497848" "497857"
unique(boatramp$PIT) %in% pit_capture$PIT
##   [1]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
##  [13]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [37]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [49]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [61]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
##  [73]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [85]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [97]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
#Boat Ramp II Site
boatramp2<-read.table("boat_ramp_II_complete.csv", header=FALSE, sep="", fill=TRUE, col.names=c("D", "Date", "Time", "Time2", "HA", "PIT", "Antenna", "Col1","Col2"), na.strings=c("", "NA"))
boatramp2<-boatramp2[-which(is.na(boatramp2$PIT)),]
boatramp2<-boatramp2[-which(boatramp2$D!="D"),]
boatramp2<-boatramp2[-which(boatramp2$Antenna!="A4"),]

boatramp2<-select(boatramp2, c(Date, Time, PIT, Antenna))
test<-paste(boatramp2$Date,boatramp2$Time)
boatramp2$DATETIME<- as.POSIXct(test, format='%Y-%m-%d %H:%M:%S', tz="CDT") #Reformat as POSIXct
# boatramp2<-boatramp2[-which(is.na(boatramp2$DATETIME)),] #remove NA values
boatramp2<-boatramp2[-which(date(boatramp2$DATETIME)<"2019-09-01 12:00:00 CDT"),]
boatramp2$PIT<-as.character(boatramp2$PIT) #toString(boatramp2$PIT)
boatramp2$PIT<-str_sub(boatramp2$PIT, 11, 16)
boatramp2$PIT[boatramp2$PIT==""] <- NA
boatramp2<-na.omit(boatramp2)
# which(boatramp2$PIT=="49768")
# boatramp2<-boatramp2[-which(grepl("[[:alpha:]]", boatramp2$PIT)),]
# which(grepl("49768", boatramp2$PIT))
which(row.names(boatramp2)=="6682")
## [1] 6616
boatramp2<-boatramp2[-6624,]
boatramp2$Site<-"B2"
# boatramp2 <- boatramp2 [order(boatramp2$PIT),]
# write.csv( boatramp2, "cleaned_boatramp2.csv")

# merged_br2<- merge(boatramp2, pit_capture,  by="PIT")
merged_br2<-boatramp2
head(merged_br2)
##         Date        Time    PIT Antenna            DATETIME Site
## 1 2019-09-23 12:34:29.31 567164      A4 2019-09-23 12:34:29   B2
## 2 2019-09-23 12:34:29.71 567164      A4 2019-09-23 12:34:29   B2
## 3 2019-09-23 12:34:30.01 567164      A4 2019-09-23 12:34:30   B2
## 4 2019-09-23 12:34:30.52 567164      A4 2019-09-23 12:34:30   B2
## 5 2019-09-23 12:34:30.72 567164      A4 2019-09-23 12:34:30   B2
## 6 2019-09-23 12:34:31.13 567164      A4 2019-09-23 12:34:31   B2
length(unique(boatramp2$PIT))
## [1] 31
length(unique(merged_br2$PIT))
## [1] 31
unique(boatramp2$PIT)
##  [1] "567164"    "497661"    "497891"    "497627"    "497861"    "497664"   
##  [7] "497687"    "497871"    "497804"    "038371"    "038387"    "49768\xfa"
## [13] "038355"    "567176"    "775182"    "497649"    "497876"    "497886"   
## [19] "497667"    "775249"    "038326"    "038377"    "567302"    "497656"   
## [25] "038388"    "156730"    "038313"    "497653"    "497616"    "497848"   
## [31] "038397"
unique(boatramp2$PIT) %in% pit_capture$PIT
##  [1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
## [13]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [25]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
#Crown Site
crown<-read.table("crown_complete.csv", header=FALSE, fill=TRUE,col.names=c("D", "Date", "Time", "Time2", "HA", "PIT", "Antenna", "Col1","Col2"), na.strings=c("", "NA"), stringsAsFactors = FALSE)
crown<-select(crown, c(Date, Time, PIT, Antenna))

crown<-crown[-which(is.na(crown$Antenna)),]
crown<-crown[which(crown$Antenna %in% c("A1", "A2", "A3")),]
crown$Antenna<-as.character(crown$Antenna)

crown$DATETIME<- as.POSIXct(paste(as.character(crown$Date),as.character(crown$Time)), format='%Y-%m-%d %H:%M:%S', tz="CDT") #Reformat as POSIXct
crown<-crown[-which(is.na(crown$DATETIME)),] #remove NA values
crown$PIT<-as.character(crown$PIT) #toString(crown$PIT)
crown$PIT<-str_sub(crown$PIT, 11, 16)
crown$PIT[crown$PIT==""] <- NA
# crown<-crown[-which(is.na(crown$PIT)),]
crown$Site<-"C"
crown<-crown[which(crown$DATETIME>"2019-01-01 12:00:00 CDT"),]
crown<-na.omit(crown)
crown<-crown[-which(grepl("[[:alpha:]]", crown$PIT)),]
crown<-crown[-which(crown$PIT=="000000"),] #remove a few more suspect IDs
crown<-crown[-which(crown$PIT=="75241"),]

# merged_crown<- merge(crown, pit_capture,  by="PIT")
merged_crown<-crown
head(merged_crown)
##         Date        Time    PIT Antenna            DATETIME Site
## 1 2019-07-24 21:19:14.37 497656      A2 2019-07-24 21:19:14    C
## 2 2019-07-24 21:26:42.97 038315      A1 2019-07-24 21:26:42    C
## 3 2019-07-24 21:26:55.88 038315      A1 2019-07-24 21:26:55    C
## 4 2019-07-25 02:52:29.07 775173      A1 2019-07-25 02:52:29    C
## 5 2019-07-25 02:52:29.47 775173      A1 2019-07-25 02:52:29    C
## 6 2019-07-25 02:52:30.68 775173      A1 2019-07-25 02:52:30    C
length(unique(crown$PIT))
## [1] 119
length(unique(merged_crown$PIT))
## [1] 119
unique(crown$PIT)
##   [1] "497656" "038315" "775173" "497894" "775186" "497874" "567150" "567181"
##   [9] "038307" "567137" "567207" "497581" "497877" "497887" "775219" "775172"
##  [17] "497693" "567236" "497870" "038301" "775204" "497641" "497630" "038339"
##  [25] "497892" "038388" "038368" "775213" "497753" "775177" "497628" "775241"
##  [33] "497875" "038391" "497622" "497690" "775180" "775203" "775170" "038365"
##  [41] "497675" "038313" "775169" "497652" "497876" "497632" "497836" "497822"
##  [49] "497663" "038350" "497771" "038387" "775194" "497827" "038334" "775239"
##  [57] "497627" "497631" "497649" "497639" "038369" "038344" "497806" "038361"
##  [65] "497661" "038382" "497865" "038370" "497626" "497766" "038390" "497684"
##  [73] "038326" "038305" "497604" "038363" "775216" "497620" "497871" "775215"
##  [81] "497849" "497673" "497804" "497867" "038324" "038347" "567184" "567107"
##  [89] "497872" "038316" "497686" "038377" "433754" "038355" "038381" "038372"
##  [97] "038329" "775174" "497840" "775249" "567203" "497861" "038330" "497653"
## [105] "497777" "497687" "497886" "038306" "497716" "497729" "497659" "497608"
## [113] "038328" "775214" "497633" "038314" "038383" "497688" "038380"
unique(crown$PIT) %in% pit_capture$PIT
##   [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
##  [13]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [37]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [49]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [61]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [73]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [85]  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
##  [97]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [109]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
# Halstead's Bay-----------------------------------------------------------------
#Cardinal Cove Site
ccove<-read.table("cardinal_complete.csv", header=FALSE, fill=TRUE,col.names=c("D", "Date", "Time", "Time2", "HA", "PIT", "Antenna", "Col1","Col2"), na.strings=c("", "NA"))
ccove<-select(ccove, c(Date, Time, PIT, Antenna))

ccove<-ccove[-which(is.na(ccove$Antenna)),]
ccove$DATETIME<- as.POSIXct(paste(as.character(ccove$Date),as.character(ccove$Time)), format='%Y-%m-%d %H:%M:%S', tz="CDT") #Reformat as POSIXct
# ccove<-ccove[-which(is.na(ccove$DATETIME)),] #remove NA values
ccove$PIT<-as.character(ccove$PIT) #toString(ccove$PIT)
ccove$PIT<-str_sub(ccove$PIT, 11, 16)
ccove$PIT[ccove$PIT==""] <- NA
ccove<-ccove[-which(is.na(ccove$PIT)),]
ccove<-ccove[-which(ccove$PIT=="000000"),] #remove a few more suspect IDs
ccove$Site<-"CC"

# merged_ccove<- merge(ccove, pit_capture,  by="PIT")
merged_ccove<-ccove
head(merged_ccove)
##          Date        Time    PIT Antenna            DATETIME Site
## 34 2019-08-16 14:10:39.10 567030      A1 2019-08-16 14:10:39   CC
## 35 2019-08-16 14:10:42.72 567030      A1 2019-08-16 14:10:42   CC
## 36 2019-08-16 14:10:43.33 567030      A1 2019-08-16 14:10:43   CC
## 37 2019-08-16 14:11:06.06 567030      A2 2019-08-16 14:11:06   CC
## 38 2019-08-16 14:11:07.27 567030      A2 2019-08-16 14:11:07   CC
## 39 2019-08-16 14:11:07.87 567030      A2 2019-08-16 14:11:07   CC
length(unique(ccove$PIT))
## [1] 70
length(unique(merged_ccove$PIT))
## [1] 70
unique(ccove$PIT)
##  [1] "567030" "567003" "567184" "567235" "567459" "567017" "567268" "567373"
##  [9] "567134" "567408" "567447" "567331" "567327" "567390" "567480" "567468"
## [17] "567382" "567117" "567217" "567009" "567380" "567113" "567374" "567084"
## [25] "567318" "567277" "567393" "567465" "567267" "567326" "567254" "497890"
## [33] "567319" "567353" "567232" "567358" "567438" "567492" "567004" "567172"
## [41] "567237" "567245" "567317" "567210" "567269" "567333" "567198" "567307"
## [49] "567365" "567297" "567076" "567498" "567211" "567098" "567316" "567173"
## [57] "567045" "567120" "567458" "567028" "567430" "567159" "567401" "567303"
## [65] "567423" "567391" "567405" "567272" "567002" "567445"
unique(ccove$PIT) %in% pit_capture$PIT
##  [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [13]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [37]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [49]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
## [61]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
#Trillium I site
trillium<-read.table("trillium_complete.csv", header=FALSE, fill=TRUE,col.names=c("D", "Date", "Time", "Time2", "HA", "PIT", "Antenna", "Col1","Col2"), na.strings=c("", "NA"))
trillium<-select(trillium, c(Date, Time, PIT, Antenna))

trillium<-trillium[-which(is.na(trillium$Antenna)),]
trillium$DATETIME<- as.POSIXct(paste(as.character(trillium$Date),as.character(trillium$Time)), format='%Y-%m-%d %H:%M:%S', tz="CDT") #Reformat as POSIXct
# trillium<-trillium[-which(is.na(trillium$DATETIME)),] #remove NA values
trillium$PIT<-as.character(trillium$PIT) #toString(trillium$PIT)
trillium$PIT<-str_sub(trillium$PIT, 11, 16)
trillium$PIT[trillium$PIT==""] <- NA
trillium<-trillium[-which(is.na(trillium$PIT)),]
trillium$Site<-"T"

# merged_trillium<- merge(trillium, pit_capture,  by="PIT")
merged_trillium<-trillium
head(merged_trillium)
##         Date        Time    PIT Antenna            DATETIME Site
## 1 2019-08-15 14:51:06.85 567003      A1 2019-08-15 14:51:06    T
## 2 2019-08-15 14:51:07.45 567003      A1 2019-08-15 14:51:07    T
## 3 2019-08-15 14:51:08.96 567003      A1 2019-08-15 14:51:08    T
## 4 2019-08-15 14:51:09.87 567003      A1 2019-08-15 14:51:09    T
## 5 2019-08-15 14:51:13.20 567003      A1 2019-08-15 14:51:13    T
## 6 2019-08-15 14:51:14.70 567003      A1 2019-08-15 14:51:14    T
length(unique(trillium$PIT))
## [1] 55
length(unique(merged_trillium$PIT))
## [1] 55
unique(trillium$PIT)
##  [1] "567003" "567184" "567481" "567329" "567491" "567400" "567332" "567290"
##  [9] "567494" "567365" "567496" "567311" "567284" "567467" "567338" "567361"
## [17] "567434" "038336" "497629" "497865" "567251" "567282" "567411" "567293"
## [25] "567435" "567294" "567385" "567360" "567217" "567409" "567211" "567379"
## [33] "567348" "567413" "567442" "567289" "567308" "038332" "567462" "567269"
## [41] "567272" "567493" "567444" "567009" "567076" "567336" "567045" "567014"
## [49] "567254" "567198" "567364" "567159" "018109" "567086" "567384"
unique(trillium$PIT) %in% pit_capture$PIT
##  [1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
## [13]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
## [37]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
## [49]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
#Trillium II site
trillium2<-read.table("trillium_II_complete.csv", header=FALSE, fill=TRUE,col.names=c("D", "Date", "Time", "Time2", "HA", "PIT", "Antenna", "Col1","Col2"), na.strings=c("", "NA"))
trillium2<-select(trillium2, c(Date, Time, PIT, Antenna))

trillium2<-trillium2[-which(is.na(trillium2$Antenna)),]
trillium2$DATETIME<- as.POSIXct(paste(as.character(trillium2$Date),as.character(trillium2$Time)), format='%Y-%m-%d %H:%M:%S', tz="CDT") #Reformat as POSIXct
# trillium2<-trillium2[-which(is.na(trillium2$DATETIME)),] #remove NA values
trillium2$PIT<-as.character(trillium2$PIT) #toString(trillium2$PIT)
trillium2$PIT<-str_sub(trillium2$PIT, 11, 16)
trillium2$PIT[trillium2$PIT==""] <- NA
trillium2<-trillium2[-which(is.na(trillium2$PIT)),]
trillium2<-trillium2[-which(grepl("[[:alpha:]]", trillium2$PIT)),]
trillium2$Site<-"T2"

# merged_trillium2<- merge(trillium2, pit_capture,  by="PIT")
merged_trillium2<-trillium2
head(merged_trillium2)
##         Date        Time    PIT Antenna            DATETIME Site
## 1 2019-09-30 20:40:50.94 497700      A4 2019-09-30 20:40:50   T2
## 2 2019-09-30 20:40:51.36 497700      A4 2019-09-30 20:40:51   T2
## 3 2019-09-30 20:42:18.08 497700      A4 2019-09-30 20:42:18   T2
## 4 2019-09-30 20:42:18.48 497700      A4 2019-09-30 20:42:18   T2
## 5 2019-09-30 20:42:41.56 497700      A4 2019-09-30 20:42:41   T2
## 6 2019-09-30 20:42:42.06 497700      A4 2019-09-30 20:42:42   T2
length(unique(trillium2$PIT))
## [1] 27
length(unique(merged_trillium2$PIT))
## [1] 27
unique(trillium2$PIT)
##  [1] "497700" "567332" "567329" "567496" "567284" "497865" "567467" "038336"
##  [9] "567434" "018109" "567365" "567290" "567400" "567345" "567494" "567384"
## [17] "567411" "567444" "567014" "567338" "567487" "567491" "567483" "567251"
## [25] "567423" "567435" "567159"
unique(trillium2$PIT) %in% pit_capture$PIT
##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
## [13]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [25]  TRUE  TRUE  TRUE
 #how many uniquely tagged carp at each site?
(length(unique(merged_br$PIT)))
## [1] 106
(length(unique(merged_br2$PIT)))
## [1] 31
(length(unique(merged_crown$PIT))) 
## [1] 119
(length(unique(merged_ccove$PIT))) 
## [1] 70
(length(unique(merged_trillium$PIT))) 
## [1] 55
(length(unique(merged_trillium2$PIT))) 
## [1] 27

Boat ramp site unique visitors and antennae usage

Identify number of unique visitors per day and whether carp are being detected by multiple antennae at given site.

# farver:::encode_colour

ggplot(data=merged_br, aes(DATETIME, as.factor(PIT), color=Antenna)) +
  geom_point(alpha=0.5) # +

  # # scale_x_datetime(date_breaks="1 day")+
  # xlab("Date")+
  # ylab("Carp PIT ID")+
  # theme(axis.text.x=element_text(angle=90), axis.text=element_text(size=8), axis.title = element_text(size=10))

dates<-unique(merged_br$DATETIME) #how many dates of observation in dataset?
(min_date<-min(dates))
## [1] "2019-07-23 22:45:59 CDT"
(max_date<-max(dates))
## [1] "2019-10-29 00:06:05 CDT"
start_date<-as.POSIXct("2019-07-23 12:00:00 CDT")
end_date<-as.POSIXct("2019-10-29 12:00:00 CDT")

num_days<-as.numeric(end_date-start_date)
sampling_df <-data.frame(day=1:num_days, uniqueID=rep(NA, num_days))
degree_list<-NULL

for(i in 1:num_days){
  sub_combined<-merged_br %>% filter(DATETIME >= as.POSIXct(start_date+ (i-1)*86400, tz="CDT") & DATETIME <= as.POSIXct(start_date + i*86400, tz="CDT")) #86400 seconds/24 hours
  # print(sub_combined)
  sampling_df$uniqueID[i]<-length(unique(sub_combined$PIT))
  PITs<-unique(sub_combined$PIT)
  if(length(PITs)>0){
  carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
      for(j in 1:length(PITs)){
        carp.degree$numsites[j]<-length(unique(sub_combined$Antenna[which(sub_combined$PIT==PITs[j])]))
      }
  degree_list[[i]]<-carp.degree
  }
}


sampling_df$uniqueID<-as.numeric(sampling_df$uniqueID)
barplot(uniqueID ~day, data=sampling_df, xlab="Sampling Day", ylab="Number of unique carp")

dt<-rbindlist(degree_list, use.names=TRUE, fill=TRUE, idcol="SamplingDay")

p<- ggplot(dt, aes(x=numsites)) + geom_histogram(center=0)
p + transition_time(SamplingDay) +
  labs(title = "Boat Ramp-Sampling Day: {frame_time}")

#Are carp visiting all antennae at BR site (across total sampling period)?
PITs<-unique(merged_br$PIT)
carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
for(i in 1:length(PITs)){
  carp.degree$numsites[i]<-length(unique(merged_br$Antenna[which(merged_br$PIT==PITs[i])]))
}

hist(carp.degree$numsites, xlab= "Number of unique antennae visited per carp", main=NULL, cex.lab=1.5, cex.axis=1.5, breaks=seq(min(carp.degree$numsites)-0.5, max(carp.degree$numsites)+0.5, by=1), right=TRUE)

#Bipartite network for boat ramp site
edgelist<-data.frame(PIT=merged_br$PIT, Reader=merged_br$Antenna)

A <- spMatrix(nrow=length(unique(edgelist$PIT)),
        ncol=length(unique(edgelist$Reader)),
        i = as.numeric(factor(edgelist$PIT)),
        j = as.numeric(factor(edgelist$Reader)),
        x = rep(1, length(as.numeric(edgelist$PIT))) )
row.names(A) <- levels(factor(edgelist$PIT))
colnames(A) <- levels(factor(edgelist$Reader))



#using carp data
bi<-graph.incidence(A, mode="all") #undirected, named graph that is bipartite
pr<-bipartite.projection(bi) 
#co-membership network of nodes ($proj1), or a network of groups that share members ($proj2)

# get.adjacency(pr$proj1,sparse=FALSE,attr="weight")
plot(pr$proj2)

visweb(t(A), circles=TRUE,  boxes=FALSE,  labsize=1, circle.max=1.5, text="no", plotsize= 18)

plotweb(as.matrix(A), text.rot=90, labsize=1, low.lablength = 6, text.low.col="black")

Boat ramp II site unique visitors and antennae usage

Identify number of unique visitors per day and whether carp are being detected by multiple antennae at given site.

ggplot(data=merged_br2, aes(DATETIME, as.factor(PIT), color=Antenna)) +
  geom_point(alpha=0.5) +
  scale_x_datetime(date_breaks="1 day")+
  xlab("Date")+
  ylab("Carp PIT ID")+
  theme(axis.text.x=element_text(angle=90), axis.text=element_text(size=8), axis.title = element_text(size=10))

dates<-unique(merged_br2$DATETIME) #how many dates of observation in dataset?
(min_date<-min(dates))
## [1] "2019-09-23 16:43:05 CDT"
(max_date<-max(dates))
## [1] "2019-10-09 07:23:37 CDT"
start_date<-as.POSIXct("2019-09-23 12:00:00 CDT")
end_date<-as.POSIXct("2019-10-09 12:00:00 CDT")

num_days<-as.numeric(end_date-start_date)
sampling_df <-data.frame(day=1:num_days, uniqueID=rep(NA, num_days))
degree_list<-NULL

for(i in 1:num_days){
  sub_combined<-merged_br2 %>% filter(DATETIME >= as.POSIXct(start_date+ (i-1)*86400, tz="CDT") & DATETIME <= as.POSIXct(start_date + i*86400, tz="CDT")) #86400 seconds/24 hours
  # print(sub_combined)
  sampling_df$uniqueID[i]<-length(unique(sub_combined$PIT))
  PITs<-unique(sub_combined$PIT)
  if(length(PITs)>0){
  carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
      for(j in 1:length(PITs)){
        carp.degree$numsites[j]<-length(unique(sub_combined$Antenna[which(sub_combined$PIT==PITs[j])]))
      }
  degree_list[[i]]<-carp.degree
  }
}


sampling_df$uniqueID<-as.numeric(sampling_df$uniqueID)
barplot(uniqueID ~day, data=sampling_df, xlab="Sampling Day", ylab="Number of unique carp")

dt<-rbindlist(degree_list, use.names=TRUE, fill=TRUE, idcol="SamplingDay")

# p<- ggplot(dt, aes(x=numsites)) + geom_histogram(center=0)
# p + transition_time(SamplingDay) +
#   labs(title = "Boat Ramp-Sampling Day: {frame_time}")

#Are carp visiting all antennae at BR site (across total sampling period)?
# PITs<-unique(merged_br2$PIT)
# carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
# for(i in 1:length(PITs)){
#   carp.degree$numsites[i]<-length(unique(merged_br2$Antenna[which(merged_br2$PIT==PITs[i])]))
# }
# 
# hist(carp.degree$numsites, xlab= "Number of unique antennae visited per carp", main=NULL, cex.lab=1.5, cex.axis=1.5, breaks=seq(min(carp.degree$numsites)-0.5, max(carp.degree$numsites)+0.5, by=1), right=TRUE)

#Looks like all one reader A4? So no point in doing bipartite networks
#Bipartite network for boat ramp site
# edgelist<-data.frame(PIT=merged_br2$PIT, Reader=merged_br2$Antenna)
# 
# A <- spMatrix(nrow=length(unique(edgelist$PIT)),
#         ncol=length(unique(edgelist$Reader)),
#         i = as.numeric(factor(edgelist$PIT)),
#         j = as.numeric(factor(edgelist$Reader)),
#         x = rep(1, length(as.numeric(edgelist$PIT))) )
# row.names(A) <- levels(factor(edgelist$PIT))
# colnames(A) <- levels(factor(edgelist$Reader))
# 
# 
# 
# #using carp data
# bi<-graph.incidence(A, mode="all") #undirected, named graph that is bipartite
# pr<-bipartite.projection(bi) 
# #co-membership network of nodes ($proj1), or a network of groups that share members ($proj2)
# 
# # get.adjacency(pr$proj1,sparse=FALSE,attr="weight")
# plot(pr$proj2)
# 
# visweb(t(A), circles=TRUE,  boxes=FALSE,  labsize=1, circle.max=1.5, text="no", plotsize= 18)
# plotweb(as.matrix(A), text.rot=90, labsize=1, low.lablength = 6, text.low.col="black")

Crown site unique visitors and antennae usage

Identify number of unique visitors per day and whether carp are being detected by multiple antennae at given site.

ggplot(data=merged_crown, aes(DATETIME, as.factor(PIT), colour=Antenna)) +
  geom_point(alpha=0.5) +
  scale_x_datetime(date_breaks="1 day")+
  xlab("Date")+
  ylab("Carp PIT ID")+
  theme(axis.text.x=element_text(angle=90), axis.text=element_text(size=8), axis.title = element_text(size=10))

dates<-unique(merged_crown$DATETIME) #how many dates of observation in dataset?
(min_date<-min(dates))
## [1] "2019-07-24 21:19:14 CDT"
(max_date<-max(dates))
## [1] "2019-10-21 00:39:37 CDT"
start_date<-as.POSIXct("2019-07-24 12:00:00 CDT")
end_date<-as.POSIXct("2019-10-21 12:00:00 CDT")

num_days<-as.numeric(end_date-start_date)
sampling_df <-data.frame(day=1:num_days, uniqueID=rep(NA, num_days))
degree_list<-NULL

for(i in 1:num_days){
  sub_combined<-merged_crown %>% filter(DATETIME >= as.POSIXct(start_date+ (i-1)*86400, tz="CDT") & DATETIME <= as.POSIXct(start_date + i*86400, tz="CDT")) #86400 seconds/24 hours
  # print(sub_combined)
  sampling_df$uniqueID[i]<-length(unique(sub_combined$PIT))
  PITs<-unique(sub_combined$PIT)
  if(length(PITs)>0){
  carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
      for(j in 1:length(PITs)){
        carp.degree$numsites[j]<-length(unique(sub_combined$Antenna[which(sub_combined$PIT==PITs[j])]))
      }
  degree_list[[i]]<-carp.degree
  }
}


sampling_df$uniqueID<-as.numeric(sampling_df$uniqueID)
barplot(uniqueID ~day, data=sampling_df, xlab="Sampling Day", ylab="Number of unique carp")

dt<-rbindlist(degree_list, use.names=TRUE, fill=TRUE, idcol="SamplingDay")

p<- ggplot(dt, aes(x=numsites)) + geom_histogram()
p + transition_time(SamplingDay) + xlab("Number of antennae visited")+
  labs(title = "Crown Site-Sampling Day: {frame_time}")

#Are carp visiting all antennae?
PITs<-unique(merged_crown$PIT)
carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
for(i in 1:length(PITs)){
  carp.degree$numsites[i]<-length(unique(merged_crown$Antenna[which(merged_crown$PIT==PITs[i])]))
}

hist(carp.degree$numsites, xlab= "Number of unique antennae visited per carp", main=NULL, cex.lab=1.5, cex.axis=1.5, breaks=seq(min(carp.degree$numsites)-0.5, max(carp.degree$numsites)+0.5, by=1), right=TRUE)

#Bipartite network
edgelist<-data.frame(PIT=merged_crown$PIT, Reader=merged_crown$Antenna)
A <- spMatrix(nrow=length(unique(edgelist$PIT)),
        ncol=length(unique(edgelist$Reader)),
        i = as.numeric(factor(edgelist$PIT)),
        j = as.numeric(factor(edgelist$Reader)),
        x = rep(1, length(as.numeric(edgelist$PIT))) )
row.names(A) <- levels(factor(edgelist$PIT))
colnames(A) <- levels(factor(edgelist$Reader))

bi<-graph.incidence(A, mode="all") #undirected, named graph that is bipartite
pr<-bipartite.projection(bi) 
#co-membership network of nodes ($proj1), or a network of groups that share members ($proj2)

plot(pr$proj2)

visweb(t(A), circles=TRUE,  boxes=FALSE,  labsize=1, circle.max=1.5, text="no", plotsize= 18)

plotweb(as.matrix(A), text.rot=90, labsize=1, low.lablength = 6, text.low.col="black")

Cardinal cove site unique visitors and antennae usage

Identify number of unique visitors per day and whether carp are being detected by multiple antennae at given site.

ggplot(data=merged_ccove, aes(DATETIME, as.factor(PIT), colour=Antenna)) +
  geom_point(alpha=0.5) +
  scale_x_datetime(date_breaks="1 day")+
  xlab("Date")+
  ylab("Carp PIT ID")+
  theme(axis.text.x=element_text(angle=90), axis.text=element_text(size=8), axis.title = element_text(size=10))

dates<-unique(merged_ccove$DATETIME) #how many dates of observation in dataset?
(min_date<-min(dates))
## [1] "2019-08-16 14:10:39 CDT"
(max_date<-max(dates))
## [1] "2019-10-07 03:02:59 CDT"
start_date<-as.POSIXct("2019-08-16 12:00:00 CDT")
end_date<-as.POSIXct("2019-10-07 12:00:00 CDT")

num_days<-as.numeric(end_date-start_date)
sampling_df <-data.frame(day=1:num_days, uniqueID=rep(NA, num_days))
degree_list<-NULL

for(i in 1:num_days){
  sub_combined<-merged_ccove %>% filter(DATETIME >= as.POSIXct(start_date+ (i-1)*86400, tz="CDT") & DATETIME <= as.POSIXct(start_date + i*86400, tz="CDT")) #86400 seconds/24 hours
  # print(sub_combined)
  sampling_df$uniqueID[i]<-length(unique(sub_combined$PIT))
  PITs<-unique(sub_combined$PIT)
  if(length(PITs)>0){
  carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
      for(j in 1:length(PITs)){
        carp.degree$numsites[j]<-length(unique(sub_combined$Antenna[which(sub_combined$PIT==PITs[j])]))
      }
  degree_list[[i]]<-carp.degree
  }
}


sampling_df$uniqueID<-as.numeric(sampling_df$uniqueID)
barplot(uniqueID ~day, data=sampling_df, xlab="Sampling Day", ylab="Number of unique carp")

dt<-rbindlist(degree_list, use.names=TRUE, fill=TRUE, idcol="SamplingDay")

p<- ggplot(dt, aes(x=numsites)) + geom_histogram(center=0)
p + transition_time(SamplingDay) + xlab("Number of antennae visited")+
  labs(title = "Cardinal Cove-Sampling Day: {frame_time}")

#Are carp visiting all antennae at BR site (across total sampling period)?
PITs<-unique(merged_ccove$PIT)
carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
for(i in 1:length(PITs)){
  carp.degree$numsites[i]<-length(unique(merged_ccove$Antenna[which(merged_ccove$PIT==PITs[i])]))
}

hist(carp.degree$numsites, xlab= "Number of unique antennae visited per carp", main=NULL, cex.lab=1.5, cex.axis=1.5, breaks=seq(min(carp.degree$numsites)-0.5, max(carp.degree$numsites)+0.5, by=1), right=TRUE)

#Bipartite network for boat ramp site
edgelist<-data.frame(PIT=merged_ccove$PIT, Reader=merged_ccove$Antenna)

A <- spMatrix(nrow=length(unique(edgelist$PIT)),
        ncol=length(unique(edgelist$Reader)),
        i = as.numeric(factor(edgelist$PIT)),
        j = as.numeric(factor(edgelist$Reader)),
        x = rep(1, length(as.numeric(edgelist$PIT))) )
row.names(A) <- levels(factor(edgelist$PIT))
colnames(A) <- levels(factor(edgelist$Reader))



#using carp data
bi<-graph.incidence(A, mode="all") #undirected, named graph that is bipartite
pr<-bipartite.projection(bi) 
#co-membership network of nodes ($proj1), or a network of groups that share members ($proj2)

# get.adjacency(pr$proj1,sparse=FALSE,attr="weight")
plot(pr$proj2)

visweb(t(A), circles=TRUE,  boxes=FALSE,  labsize=1, circle.max=1.5, text="no", plotsize= 18)

plotweb(as.matrix(A), text.rot=90, labsize=1, low.lablength = 6, text.low.col="black")

Trillium site unique visitors and antennae usage

Identify number of unique visitors per day and whether carp are being detected by multiple antennae at given site.

ggplot(data=merged_trillium, aes(DATETIME, as.factor(PIT), colour=Antenna)) +
  geom_point(alpha=0.5) +
  scale_x_datetime(date_breaks="1 day")+
  xlab("Date")+
  ylab("Carp PIT ID")+
  theme(axis.text.x=element_text(angle=90), axis.text=element_text(size=8), axis.title = element_text(size=10))

dates<-unique(merged_trillium$DATETIME) #how many dates of observation in dataset?
(min_date<-min(dates))
## [1] "2019-08-15 14:51:06 CDT"
(max_date<-max(dates))
## [1] "2019-10-12 04:40:31 CDT"
start_date<-as.POSIXct("2019-08-15 12:00:00 CDT")
end_date<-as.POSIXct("2019-10-12 12:00:00 CDT")

num_days<-as.numeric(end_date-start_date)
sampling_df <-data.frame(day=1:num_days, uniqueID=rep(NA, num_days))
degree_list<-NULL

for(i in 1:num_days){
  sub_combined<-merged_trillium %>% filter(DATETIME >= as.POSIXct(start_date+ (i-1)*86400, tz="CDT") & DATETIME <= as.POSIXct(start_date + i*86400, tz="CDT")) #86400 seconds/24 hours
  # print(sub_combined)
  sampling_df$uniqueID[i]<-length(unique(sub_combined$PIT))
  PITs<-unique(sub_combined$PIT)
  if(length(PITs)>0){
  carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
      for(j in 1:length(PITs)){
        carp.degree$numsites[j]<-length(unique(sub_combined$Antenna[which(sub_combined$PIT==PITs[j])]))
      }
  degree_list[[i]]<-carp.degree
  }
}


sampling_df$uniqueID<-as.numeric(sampling_df$uniqueID)
barplot(uniqueID ~day, data=sampling_df, xlab="Sampling Day", ylab="Number of unique carp")

dt<-rbindlist(degree_list, use.names=TRUE, fill=TRUE, idcol="SamplingDay")

p<- ggplot(dt, aes(x=numsites)) + geom_histogram(center=0)
p + transition_time(SamplingDay) + xlab("Number of antennae visited")+
  labs(title = "Trillium-Sampling Day: {frame_time}")

#Are carp visiting all antennae at BR site (across total sampling period)?
PITs<-unique(merged_trillium$PIT)
carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
for(i in 1:length(PITs)){
  carp.degree$numsites[i]<-length(unique(merged_trillium$Antenna[which(merged_trillium$PIT==PITs[i])]))
}

hist(carp.degree$numsites, xlab= "Number of unique antennae visited per carp", main=NULL, cex.lab=1.5, cex.axis=1.5, breaks=seq(min(carp.degree$numsites)-0.5, max(carp.degree$numsites)+0.5, by=1), right=TRUE)

#Bipartite network for boat ramp site
edgelist<-data.frame(PIT=merged_trillium$PIT, Reader=merged_trillium$Antenna)

A <- spMatrix(nrow=length(unique(edgelist$PIT)),
        ncol=length(unique(edgelist$Reader)),
        i = as.numeric(factor(edgelist$PIT)),
        j = as.numeric(factor(edgelist$Reader)),
        x = rep(1, length(as.numeric(edgelist$PIT))) )
row.names(A) <- levels(factor(edgelist$PIT))
colnames(A) <- levels(factor(edgelist$Reader))



#using carp data
bi<-graph.incidence(A, mode="all") #undirected, named graph that is bipartite
pr<-bipartite.projection(bi) 
#co-membership network of nodes ($proj1), or a network of groups that share members ($proj2)

# get.adjacency(pr$proj1,sparse=FALSE,attr="weight")
plot(pr$proj2)

# visweb(t(A), circles=TRUE,  boxes=FALSE,  labsize=1, circle.max=1.5, text="no", plotsize= 18)
plotweb(as.matrix(A), text.rot=90, labsize=1, low.lablength = 6, text.low.col="black")

## Trillium II site unique visitors and antennae usage

Identify number of unique visitors per day and whether carp are being detected by multiple antennae at given site.

ggplot(data=merged_trillium2, aes(DATETIME, as.factor(PIT), colour=Antenna)) +
  geom_point(alpha=0.5) +
  scale_x_datetime(date_breaks="1 day")+
  xlab("Date")+
  ylab("Carp PIT ID")+
  theme(axis.text.x=element_text(angle=90), axis.text=element_text(size=8), axis.title = element_text(size=10))

dates<-unique(merged_trillium2$DATETIME) #how many dates of observation in dataset?
(min_date<-min(dates))
## [1] "2019-08-23 09:39:09 CDT"
(max_date<-max(dates))
## [1] "2019-10-18 03:16:58 CDT"
start_date<-as.POSIXct("2019-08-23 12:00:00 CDT")
end_date<-as.POSIXct("2019-10-18 12:00:00 CDT")

num_days<-as.numeric(end_date-start_date)
sampling_df <-data.frame(day=1:num_days, uniqueID=rep(NA, num_days))
degree_list<-NULL

for(i in 1:num_days){
  sub_combined<-merged_trillium2 %>% filter(DATETIME >= as.POSIXct(start_date+ (i-1)*86400, tz="CDT") & DATETIME <= as.POSIXct(start_date + i*86400, tz="CDT")) #86400 seconds/24 hours
  # print(sub_combined)
  sampling_df$uniqueID[i]<-length(unique(sub_combined$PIT))
  PITs<-unique(sub_combined$PIT)
  if(length(PITs)>0){
  carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
      for(j in 1:length(PITs)){
        carp.degree$numsites[j]<-length(unique(sub_combined$Antenna[which(sub_combined$PIT==PITs[j])]))
      }
  degree_list[[i]]<-carp.degree
  }
}


sampling_df$uniqueID<-as.numeric(sampling_df$uniqueID)
barplot(uniqueID ~day, data=sampling_df, xlab="Sampling Day", ylab="Number of unique carp")

dt<-rbindlist(degree_list, use.names=TRUE, fill=TRUE, idcol="SamplingDay")

# p<- ggplot(dt, aes(x=numsites)) + geom_histogram(center=0)
# p + transition_time(SamplingDay) + xlab("Number of antennae visited")+
#   labs(title = "Trillium-Sampling Day: {frame_time}")
# 
# #Are carp visiting all antennae at BR site (across total sampling period)?
# PITs<-unique(merged_trillium2$PIT)
# carp.degree<-data.frame(PITs, numsites= rep(NA, length(PITs)))
# for(i in 1:length(PITs)){
#   carp.degree$numsites[i]<-length(unique(merged_trillium2$Antenna[which(merged_trillium2$PIT==PITs[i])]))
# }
# 
# hist(carp.degree$numsites, xlab= "Number of unique antennae visited per carp", main=NULL, cex.lab=1.5, cex.axis=1.5, breaks=seq(min(carp.degree$numsites)-0.5, max(carp.degree$numsites)+0.5, by=1), right=TRUE)
# 
# #Bipartite network for boat ramp site
# edgelist<-data.frame(PIT=merged_trillium2$PIT, Reader=merged_trillium2$Antenna)
# 
# A <- spMatrix(nrow=length(unique(edgelist$PIT)),
#         ncol=length(unique(edgelist$Reader)),
#         i = as.numeric(factor(edgelist$PIT)),
#         j = as.numeric(factor(edgelist$Reader)),
#         x = rep(1, length(as.numeric(edgelist$PIT))) )
# row.names(A) <- levels(factor(edgelist$PIT))
# colnames(A) <- levels(factor(edgelist$Reader))
# 
# 
# 
# #using carp data
# bi<-graph.incidence(A, mode="all") #undirected, named graph that is bipartite
# pr<-bipartite.projection(bi) 
# #co-membership network of nodes ($proj1), or a network of groups that share members ($proj2)
# 
# # get.adjacency(pr$proj1,sparse=FALSE,attr="weight")
# plot(pr$proj2)
# 
# # visweb(t(A), circles=TRUE,  boxes=FALSE,  labsize=1, circle.max=1.5, text="no", plotsize= 18)
# plotweb(as.matrix(A), text.rot=90, labsize=1, low.lablength = 6, text.low.col="black")

Are fish visiting multiple sites?

#Combine observations across sites
combined_sites <- rbind(merged_br, merged_br2, merged_crown, merged_ccove, merged_trillium, merged_trillium2) 
head(combined_sites)
##         Date        Time    PIT Antenna            DATETIME Site
## 1 2019-07-23 22:45:59.05 038301      A1 2019-07-23 22:45:59    B
## 2 2019-07-23 22:46:00.66 038301      A1 2019-07-23 22:46:00    B
## 3 2019-07-24 12:24:17.14 567150      A1 2019-07-24 12:24:17    B
## 4 2019-07-24 12:24:19.65 567150      A1 2019-07-24 12:24:19    B
## 5 2019-07-24 12:24:21.07 567150      A1 2019-07-24 12:24:21    B
## 6 2019-07-24 12:24:29.03 567150      A1 2019-07-24 12:24:29    B
#Bipartite network for boat ramp site
edgelist<-data.frame(PIT=combined_sites$PIT, Reader=combined_sites$Site)
library('Matrix')
A <- spMatrix(nrow=length(unique(edgelist$PIT)),
        ncol=length(unique(edgelist$Reader)),
        i = as.numeric(factor(edgelist$PIT)),
        j = as.numeric(factor(edgelist$Reader)),
        x = rep(1, length(as.numeric(edgelist$PIT))) )
row.names(A) <- levels(factor(edgelist$PIT))
colnames(A) <- levels(factor(edgelist$Reader))

library('igraph')

#using carp data
bi<-graph.incidence(A, mode="all") #undirected, named graph that is bipartite
pr<-bipartite.projection(bi) 
#co-membership network of nodes ($proj1), or a network of groups that share members ($proj2)
pr$proj2
## IGRAPH 960a153 UNW- 6 11 -- 
## + attr: name (v/c), weight (e/n)
## + edges from 960a153 (vertex names):
##  [1] B --C  B --B2 B --CC B --T  B2--C  C --T  C --T2 C --CC CC--T  CC--T2
## [11] T --T2
# get.adjacency(pr$proj1,sparse=FALSE,attr="weight")
plot(pr$proj2)

# install.packages('bipartite')
library('bipartite')
# visweb(t(A), prednames=TRUE, preynames=TRUE, labsize = 1)
# visweb(t(A), circles=TRUE,  boxes=FALSE,  labsize=1, circle.max=1.5, text="no", plotsize= 15)
plotweb(as.matrix(A), text.rot=90) #, labsize=1, low.lablength = 6, text.low.col="black")

unique(merged_crown$PIT[which(merged_crown$PIT %in% merged_trillium$PIT)])
## [1] "497865" "567184"
unique(merged_crown$PIT[which(merged_crown$PIT %in% merged_trillium2$PIT)])
## [1] "497865"
ID497865<-combined_sites[which(combined_sites$PIT=="497865"),]
ID497865<-ID497865[order(ID497865$DATETIME),]

ggplot(data=ID497865, aes(DATETIME, as.factor(Site))) +
  geom_point(alpha=0.5) +
  scale_x_datetime(date_breaks="1 day")+
  xlab("Date")+
  ylab("Site")+
  theme(axis.text.x=element_text(angle=90), axis.text=element_text(size=8), axis.title = element_text(size=10))